Utilizing level differences for speech enhancement

ABSTRACT

Systems and methods for utilizing level differences to attenuate noise and enhance speech are provided. In exemplary embodiments, energy estimates of acoustic signals, representing captured sound, are determined in order to determine a level difference. This level difference in combination with a noise estimate, based only on a primary acoustic signal, allow a filter estimate to be derived. In some embodiments, the derived filter estimate may be smoothed. The filter estimate is then applied to the acoustic signal from the primary acoustic signal to generate a speech estimate.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent application Ser. No. 13/705,132, filed Dec. 4, 2012, which, in turn, is a continuation of U.S. patent application Ser. No. 11/343,524, filed on Jan. 30, 2006 (now U.S. Pat. No. 8,345,890), which, in turn, claims the benefit of U.S. Provisional Patent Application No. 60/756,826, filed Jan. 5, 2006, all of which are incorporated herein by reference.

BACKGROUND OF THE INVENTION

Presently, there are numerous methods for reducing background noise in speech recordings made in adverse environments. One such method is to use two or more microphones on an audio device. These microphones are localized and allow the device to determine a difference between the microphone signals. For example, due to a space difference between the microphones, the difference in times of arrival of the signals from a speech source to the microphones may be utilized to localize the speech source. Once localized, the signals can be spatially filtered to suppress the noise originating from different directions.

Beamforming techniques utilizing a linear array of microphones may create an “acoustic beam” in a direction of the source, and thus can be used as spatial filters. This method, however, suffers from many disadvantages. First, it is necessary to identify the direction of the speech source. The time delay, however, is difficult to estimate due to such factors as reverberation which may create ambiguous or incorrect information. Second, the number of sensors needed to achieve adequate spatial filtering is generally large (e.g., more than two). Additionally, if the microphone array is used on a small device, such as a cellular phone, beamforming is more difficult at lower frequencies because the distance between the microphones of the array is small compared to the wavelength.

Spatial separation and directivity of the microphones provides not only arrival-time differences but also inter-microphone level differences (ILD) that can be more easily identified than time differences in some applications. Therefore, there is a need for a system and method for utilizing ILD for noise suppression and speech enhancement.

SUMMARY OF THE INVENTION

Embodiments of the present invention overcome or substantially alleviate prior problems associated with noise suppression and speech enhancement. In general, systems and methods for utilizing inter-microphone level differences (ILD) to attenuate noise and enhance speech are provided. In exemplary embodiments, the ILD is based on energy level differences.

In exemplary embodiments, energy estimates of acoustic signals received from a primary microphone and a secondary microphone are determined for each channel of a cochlea frequency analyzer for each time frame. The energy estimates may be based on a current acoustic signal and an energy estimate of a previous frame. Based on these energy estimates the ILD may be calculated.

The ILD information is used to determine time-frequency components where speech is likely to be present and to derive a noise estimate from the primary microphone acoustic signal. The energy and noise estimates allow a filter estimate to be derived. In one embodiment, a noise estimate of the acoustic signal from the primary microphone is determined based on minimum statistics of the current energy estimate of the primary microphone signal and a noise estimate of the previous frame. In some embodiments, the derived filter estimate may be smoothed to reduce acoustic artifacts.

The filter estimate is then applied to the cochlea representation of the acoustic signal from the primary microphone to generate a speech estimate. The speech estimate is then converted into time domain for output. The conversion may be performed by applying an inverse frequency transformation to the speech estimate.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1 a and 1 b are diagrams of two environments in which embodiments of the present invention may be practiced;

FIG. 2 is a block diagram of an exemplary communication device implementing embodiments of the present invention;

FIG. 3 is a block diagram of an exemplary audio processing engine; and

FIG. 4 is a flowchart of an exemplary method for utilizing inter-microphone level differences to enhance speech.

DESCRIPTION OF EXEMPLARY EMBODIMENTS

The present invention provides exemplary systems and methods for recording and utilizing inter-microphone level differences to identify time frequency regions dominated by speech in order to attenuate background noise and far-field distractors. Embodiments of the present invention may be practiced on any communication device that is configured to receive sound such as, but not limited to, cellular phones, phone handsets, headsets, and conferencing systems. Advantageously, exemplary embodiments are configured to provide improved noise suppression on small devices where prior art microphone arrays will not function well. While embodiments of the present invention will be described in reference to operation on a cellular phone, the present invention may be practiced on any communication device.

Referring to FIGS. 1 a and 1 b, environments in which embodiments of the present invention may be practiced are shown. A user provides a speech source 102, hereinafter audio source, to a communication device 104. The communication device 104 comprises at least two microphones: a primary microphone 106 relative to the speech source 102 and a secondary microphone 108 located a distance away from the primary microphone 106. In exemplary embodiments, the microphones 106 and 108 are omni-directional microphones. Alternative embodiments may utilize other forms of microphones or acoustic sensors.

While the microphones 106 and 108 receive sound information from the speech source 102, the microphones 106 and 108 also pick up noise 110. While the noise 110 is shown coming from a single location, the noise may comprise any sounds from one or more locations different than the speech and may include reverberations and echoes.

Embodiments of the present invention exploit level differences (e.g., energy differences) between the two microphones 106 and 108 independent of how the level differences are obtained. In FIG. 1 a because the primary microphone 106 is much closer to the speech source 102 than the secondary microphone 108, the intensity level is higher for the primary microphone 106 resulting in a larger energy level during a speech/voice segment. In FIG. 1 b, because directional response of the primary microphone 106 is highest in the direction of the speech source 102 and directional response of the secondary microphone 108 is lower in the direction of the speech source 102, the level difference is highest in the direction of the speech source 102 and lower elsewhere.

The level differences may then be used to discriminate speech and noise in the time-frequency domain. Further embodiments may use a combination of energy level difference and time delays to discriminate speech. Based on binaural cue decoding, speech signal extraction or speech enhancement may be performed.

Referring now to FIG. 2, the exemplary communication device 104 is shown in more detail. The exemplary communication device 104 is an audio receiving device that comprises a processor 202, the primary microphone 106, the secondary microphone 108, an audio processing engine 204, and an output device 206. The communication device 104 may comprise further components necessary for communication device 104 operation, but not related to noise suppression or speech enhancement. The audio processing engine 204 will be discussed in more details in connection with FIG. 3.

As previously discussed, the primary and secondary microphones 106 and 108, respectively, are spaced a distance apart in order to allow for an energy level difference between them. It should be noted that the microphones 106 and 108 may comprise any type of acoustic receiving device or sensor, and may be omni-directional, unidirectional, or have other directional characteristics or polar patters. Once received by the microphones 106 and 108, the acoustic signals are converted by an analog-to-digital converter (not shown) into digital signals for processing in accordance with some embodiments. In order to differentiate the acoustic signals, the acoustic signal received by the primary microphone 106 is herein referred to as the primary acoustic signal, while the acoustic signal received by the secondary microphone 108 is herein referred to as the secondary acoustic signal.

The output device 206 is any device which provides an audio output to the user. For example, the output device 206 may be an earpiece of a headset or handset, or a speaker on a conferencing device.

FIG. 3 is a detailed block diagram of the exemplary audio processing engine 204, according to one embodiment of the present invention. In one embodiment, the acoustic signals (i.e., X₁ and X₂) received from the primary and secondary microphones 106 and 108 (FIG. 2) are converted to digital signals and forwarded to a frequency analysis module 302. In one embodiment, the frequency analysis module 302 takes the acoustic signals and mimics a cochlea implementation (i.e., cochlea domain) using a filter bank. Alternatively, other filter banks such as short-time Fourier transform (STFT), sub-band filter banks, modulated complex lapped transforms, wavelets, etc. can be used for the frequency analysis and synthesis. Because most sounds (e.g., acoustic signal) are complex and comprise more than one frequency, a sub-band analysis on the acoustic signal determines what individual frequencies are present in the complex acoustic signal during a frame (i.e., a predetermined period of time). In one embodiment, the frame is 4 ms long.

Once the frequencies are determined, the signals are forwarded to an energy module 304 which computes energy level estimates during an interval of time. The energy estimate may be based on bandwidth of the cochlea channel and the acoustic signal. The exemplary energy module 304 is a component which, in some embodiments, can be represented mathematically. Thus, the energy level of the acoustic signal received at the primary microphone 106 may be approximated, in one embodiment, by the following equation

E ₁(t,ω)=λ_(E) |X ₁(t,ω)|²+(1−λ_(E))E ₁(t−1,ω)

where ζ_(E) is a number between zero and one that determines an averaging time constant, X₁(t,ω) is the acoustic signal of the primary microphone 106 in the cochlea domain, ω represents the frequency, and t represents time. As shown, a present energy level of the primary microphone 106, E₁(t,ω), is dependent upon a previous energy level of the primary microphone 106, E₁(t−1,w). In some other embodiments, the value of λ_(E) can be different for different frequency channels. Given a desired time constant T (e.g., 4 ms) and the sampling frequency f_(s) (e.g. 16 kHz), the value of λ_(E) can be approximated as

$\lambda_{E} = {1 - ^{- \frac{1}{{Tf}_{s}}}}$

The energy level of the acoustic signal received from the secondary microphone 108 may be approximated by a similar exemplary equation

E ₂(t,ω)=λ_(E) |X ₂(t,ω)|²+(1−λ_(E))E ₂(t−1,ω)

where X₂(t,w) is the acoustic signal of the secondary microphone 108 in the cochlea domain. Similar to the calculation of energy level for the primary microphone 106, energy level for the secondary microphone 108, E₂(t,ω), is dependent upon a previous energy level of the secondary microphone 108, E₂(t−1,ω).

Given the calculated energy levels, an inter-microphone level difference (ILD) may be determined by an ILD module 306. The ILD module 306 is a component which may be approximated mathematically, in one embodiment, as

${{ILD}\left( {t,\omega} \right)} = {\left\lbrack {1 - {2\frac{{E_{1}\left( {t,\omega} \right)}{E_{2}\left( {t,\omega} \right)}}{{E_{1}^{2}\left( {t,\omega} \right)} + {E_{2}^{2}\left( {t,\omega} \right)}}}} \right\rbrack*{{sign}\left( {{E_{1}\left( {t,\omega} \right)} - {E_{2}\left( {t,\omega} \right)}} \right)}}$

where E₁ is the energy level of the primary microphone 106 and E₂ is the energy level of the secondary microphone 108, both of which are obtained from the energy module 304. This equation provides a bounded result between −1 and 1. For example, ILD goes to 1 when the E₂ goes to 0, and ILD goes to −1 when E₁ goes to 0. Thus, when the speech source is close to the primary microphone 106 and there is no noise, ILD=1, but as more noise is added, the ILD will change. Further, as more noise is picked up by both of the microphones 106 and 108, it becomes more difficult to discriminate speech from noise.

The above equation is desirable over an ILD calculated via a ratio of the energy levels, such as

${{{ILD}\left( {t,\omega} \right)} = \frac{E_{1}\left( {t,\omega} \right)}{E_{2}\left( {t,\omega} \right)}},$

where ILD is not bounded and may go to infinity as the energy level of the primary microphone gets smaller.

In an alternative embodiment, the ILD may be approximated by

${{ILD}\left( {t,\omega} \right)} = {\frac{{E_{1}\left( {t,\omega} \right)} - {E_{2}\left( {t,\omega} \right)}}{{E_{1}\left( {t,\omega} \right)} + {E_{2}\left( {t,\omega} \right)}}.}$

Here, the ILD calculation is also bounded between −1 and 1. Therefore, this alternative ILD calculation may be used in one embodiment of the present invention.

According to an exemplary embodiment of the present invention, a Wiener filter is used to suppress noise/enhance speech. In order to derive a Wiener filter estimate, however, specific inputs are required. These inputs comprise a power spectral density of noise and a power spectral density of the source signal. As such, a noise estimate module 308 may be provided to determine a noise estimate for the acoustic signals.

According to exemplary embodiments, the noise estimate module 308 attempts to estimate the noise components in the microphone signals. In exemplary embodiments, the noise estimate is based only on the acoustic signal received by the primary microphone 106. The exemplary noise estimate module 308 is a component which can be approximated mathematically by

N(t,ω)=λ₁(t,ω)E ₁(t,ω)+(1−λ₁(t,ω))min[N(t−1,ω),E ₁(t,ω)]

according to one embodiment of the present invention. As shown, the noise estimate in this embodiment is based on minimum statistics of a current energy estimate of the primary microphone 106, E₁(t,ω) and a noise estimate of a previous time frame, N(t−1,ω). Therefore the noise estimation is performed efficiently and with low latency.

λ₁(t,ω) in the above equation is derived from the ILD approximated by the ILD module 306, as

${\lambda_{I}\left( {t,\omega} \right)} = \left\{ \begin{matrix} {\approx 0} & {{{if}\mspace{14mu} {{ILD}\left( {t,\omega} \right)}} < {threshold}} \\ {\approx 1} & {{{if}\mspace{14mu} {{ILD}\left( {t,\omega} \right)}} > {threshold}} \end{matrix} \right.$

That is, when speech at the primary microphone 106 is smaller than a threshold value (e.g., threshold=0.5) above which speech is expected to be, λ₁ is small, and thus the noise estimator follows the noise closely. When ILD starts to rise (e.g., because speech is detected), however, λ₁ increases. As a result, the noise estimate module 308 slows down the noise estimation process and the speech energy does not contribute significantly to the final noise estimate. Therefore, exemplary embodiments of the present invention may use a combination of minimum statistics and voice activity detection to determine the noise estimate.

A filter module 310 then derives a filter estimate based on the noise estimate. In one embodiment, the filter is a Wiener filter. Alternative embodiments may contemplate other filters. Accordingly, the Wiener filter approximation may be approximated, according to one embodiment, as

${W = \left( \frac{P_{s}}{P_{s} + P_{n}} \right)^{\alpha}},$

where P_(s) is a power spectral density of speech and P_(n) is a power spectral density of noise. According to one embodiment, P_(n) is the noise estimate, N(t,ω), which is calculated by the noise estimate module 308. In an exemplary embodiment, P_(s)=E₁(t,ω)−βN(t,ω), where E₁(t,ω) is the energy estimate of the primary microphone 106 from the energy module 304, and N(t,ω) is the noise estimate provided by the noise estimate module 308. Because the noise estimate changes with each frame, the filter estimate will also change with each frame.

β is an over-subtraction term which is a function of the ILD. β compensates bias of minimum statistics of the noise estimate module 308 and forms a perceptual weighting. Because time constants are different, the bias will be different between portions of pure noise and portions of noise and speech. Therefore, in some embodiments, compensation for this bias may be necessary. In exemplary embodiments, β is determined empirically (e.g., 2-3 dB at a large ILD, and is 6-9 dB at a low ILD).

α in the above exemplary Wiener filter equation is a factor which further suppresses the noise estimate. α can be any positive value. In one embodiment, nonlinear expansion may be obtained by setting α to 2. According to exemplary embodiments, α is determined empirically and applied when a body of

$W = \left( \frac{P_{s}}{P_{s} + P_{n}} \right)$

falls below a prescribed value (e.g., 12 dB down from the maximum possible value of W, which is unity).

Because the Wiener filter estimation may change quickly (e.g., from one frame to the next frame) and noise and speech estimates can vary greatly between each frame, application of the Wiener filter estimate, as is, may result in artifacts (e.g., discontinuities, blips, transients, etc.). Therefore, an optional filter smoothing module 312 is provided to smooth the Wiener filter estimate applied to the acoustic signals as a function of time. In one embodiment, the filter smoothing module 312 may be mathematically approximated as

M(t,ω)=λ_(s)(t,ω)W(t,ω)+(1−λ_(s)(t,ω))M(t−1,ω)

where λ_(s) is a function of the Wiener filter estimate and the primary microphone energy, E₁.

As shown, the filter smoothing module 312, at time (t) will smooth the Wiener filter estimate using the values of the smoothed Wiener filter estimate from the previous frame at time (t−1). In order to allow for quick response to the acoustic signal changing quickly, the filter smoothing module 312 performs less smoothing on quick changing signals, and more smoothing on slower changing signals. This is accomplished by varying the value of λ_(s) according to a weighed first order derivative of E₁ with respect to time. If the first order derivative is large and the energy change is large, then λ_(s) is set to a large value. If the derivative is small then λ_(s) is set to a smaller value.

After smoothing by the filter smoothing module 312, the primary acoustic signal is multiplied by the smoothed Wiener filter estimate to estimate the speech. In the above Wiener filter embodiment, the speech estimate is approximated by S(t,ω)=X₁(t,ω)*M(t,ω), where X₁ is the acoustic signal from the primary microphone 106. In exemplary embodiments, the speech estimation occurs in a masking module 314.

Next, the speech estimate is converted back into time domain from the cochlea domain. The conversion comprises taking the speech estimate, S(t,ω), and multiplying this with an inverse frequency of the cochlea channels in a frequency synthesis module 316. Once conversion is completed, the signal is output to user.

It should be noted that the system architecture of the audio processing engine 204 of FIG. 3 is exemplary. Alternative embodiments may comprise more components, less components, or equivalent components and still be within the scope of embodiments of the present invention. Various modules of the audio processing engine 204 may be combined into a single module. For example, the functionalities of the frequency analysis module 302 and energy module 304 may be combined into a single module. Furthermore, the functions of the ILD module 306 may be combined with the functions of the energy module 304 alone, or in combination with the frequency analysis module 302. As a further example, the functionality of the filter module 310 may be combined with the functionality of the filter smoothing module 312.

Referring now to FIG. 4, a flowchart 400 of an exemplary method for noise suppression utilizing inter-microphone level differences is shown. In step 402, audio signals are received by a primary microphone 106 and a secondary microphone 108 (FIG. 2). In exemplary embodiments, the acoustic signals are converted to digital format for processing.

Frequency analysis is then performed on the acoustic signals by the frequency analysis module 302 (FIG. 3) in step 404. According to one embodiment, the frequency analysis module 302 utilizes a filter bank to determine individual frequencies present in the complex acoustic signal.

In step 406, energy estimates for acoustic signals received at both the primary and secondary microphones 106 and 108 are computed. In one embodiment, the energy estimates are determined by an energy module 304 (FIG. 3). The exemplary energy module 304 utilizes a present acoustic signal and a previously calculated energy estimate to determine the present energy estimate.

Once the energy estimates are calculated, inter-microphone level differences (ILD) are computed in step 408. In one embodiment, the ILD is calculated based on the energy estimates of both the primary and secondary acoustic signals. In exemplary embodiments, the ILD is computed by the ILD module 306 (FIG. 3).

Based on the calculated ILD, noise is estimated in step 410. According to embodiments of the present invention, the noise estimate is based only on the acoustic signal received at the primary microphone 106. The noise estimate may be based on the present energy estimate of the acoustic signal from the primary microphone 106 and a previously computed noise estimate. In determining the noise estimate, the noise estimation is frozen or slowed down when the ILD increases, according to exemplary embodiments of the present invention.

In step 412, a filter estimate is computed by the filter module 310 (FIG. 3). In one embodiment, the filter used in the audio processing engine 204 (FIG. 3) is a Wiener filter. Once the filter estimate is determined, the filter estimate may be smoothed in step 414. Smoothing prevents fast fluctuations which may create audio artifacts. The smoothed filter estimate is applied to the acoustic signal from the primary microphone 106 in step 416 to generate a speech estimate.

In step 418, the speech estimate is converted back to the time domain. Exemplary conversion techniques apply an inverse frequency of the cochlea channel to the speech estimate. Once the speech estimate is converted, the audio signal may now be output to the user in step 420. In some embodiments, the digital acoustic signal is converted to an analog signal for output. The output may be via a speaker, earpieces, or other similar devices.

The above-described modules can be comprised of instructions that are stored on storage media. The instructions can be retrieved and executed by the processor 202 (FIG. 2). Some examples of instructions include software, program code, and firmware. Some examples of storage media comprise memory devices and integrated circuits. The instructions are operational when executed by the processor 202 to direct the processor 202 to operate in accordance with embodiments of the present invention. Those skilled in the art are familiar with instructions, processor(s), and storage media.

The present invention is described above with reference to exemplary embodiments. It will be apparent to those skilled in the art that various modifications may be made and other embodiments can be used without departing from the broader scope of the present invention. Therefore, these and other variations upon the exemplary embodiments are intended to be covered by the present invention. 

What is claimed is:
 1. A method for enhancing speech, comprising: determining a filter estimate, using at least one hardware processor, during a frame, the filter estimate based on a noise estimate of a primary acoustic signal, an energy estimate of the primary acoustic signal, and a level difference based on the primary acoustic signal and a secondary acoustic signal, the primary acoustic signal and the secondary acoustic signal each representing at least one captured sound; and applying the filter estimate to the primary acoustic signal to produce a speech estimate.
 2. The method of claim 1, further comprising determining an energy estimate for each of the acoustic signals during the frame.
 3. The method of claim 2, wherein the energy estimate of the primary acoustic signal is approximated as E₁(t,ω)=λ_(E)|X₁(t,ω)|²+(1−λ_(E))E₁(t−1,ω).
 4. The method of claim 2, wherein the energy estimate of the secondary acoustic signal is approximated as E₂(t,ω)=λ_(E)|X₂(t,ω)|²+(1−λ_(E))E₂(t−1,ω).
 5. The method of claim 2, further comprising using the energy estimates to determine the level difference for the frame.
 6. The method of claim 5, wherein the level difference is approximated by ${{ILD}\left( {t,\omega} \right)} = {\left\lbrack {1 - {2\frac{{E_{1}\left( {t,\omega} \right)}{E_{2}\left( {t,\omega} \right)}}{{E_{1}^{2}\left( {t,\omega} \right)} + {E_{2}^{2}\left( {t,\omega} \right)}}}} \right\rbrack*{{{sign}\left( {{E_{1}\left( {t,\omega} \right)} - {E_{2}\left( {t,\omega} \right)}} \right)}.}}$
 7. The method of claim 5, wherein the level difference is approximated by ${{ILD}\left( {t,\omega} \right)} = {\frac{{E_{1}\left( {t,\omega} \right)} - {E_{2}\left( {t,\omega} \right)}}{{E_{1}\left( {t,\omega} \right)} + {E_{2}\left( {t,\omega} \right)}}.}$
 8. The method of claim 1, wherein the noise estimate is based on the energy estimate of the primary acoustic signal and the level difference.
 9. The method of claim 8, wherein the noise estimate is approximated as N(t,ω)=λ_(I)(t,ω)E₁(t,ω)+(1−λ_(I)(t,ω))min[N(t−1,ω)E₁(t,ω)].
 10. The method of claim 1, further comprising smoothing the filter estimate prior to applying the filter estimate to the primary acoustic signal.
 11. The method of claim 10, wherein the smoothing is approximated as M(t,ω)=λ_(s)(t,ω)W(t,ω)+(1−λ_(s)(t,ω))M(t−1,ω).
 12. The method of claim 1, further comprising converting the speech estimate to a time domain.
 13. The method of claim 1, further comprising outputting the speech estimate to a user.
 14. The method of claim 1, wherein the at least one hardware processor comprises an audio processing engine.
 15. A system for enhancing speech on a device, comprising: a primary microphone configured to receive a primary acoustic signal; a secondary microphone located a distance away from the primary microphone and configured to receive a secondary acoustic signal; and an audio processing engine configured to enhance speech in the primary acoustic signal, the audio processing engine comprising: a noise estimate module configured to determine a noise estimate for the primary acoustic signal based on an energy estimate of the primary acoustic signal and a level difference, the level difference being based on the primary acoustic signal and a secondary acoustic signal; and a filter module configured to determine a filter estimate to be applied to the primary acoustic signal to generate a filtered acoustic signal, the filter estimate based on (i) the noise estimate of the primary acoustic signal, (ii) the energy estimate of the primary acoustic signal, and (iii) the level difference.
 16. The system of claim 15, wherein the audio processing engine further comprises an energy module configured to determine an energy estimate for each of the acoustic signals during a frame.
 17. The system of claim 15, wherein the audio processing engine further comprises a filter smoothing module configured to smooth the filter estimate prior to applying the filter estimate to the primary acoustic signal.
 18. The system of claim 15, wherein the audio processing engine further comprises a masking module configured to determine the speech estimate.
 19. A non-transitory computer readable medium having embodied thereon a program, the program being executable by a machine to perform a method for enhancing speech, the method comprising: determining a filter estimate, using at least one hardware processor, during a frame, the filter estimate based on: (i) a noise estimate of a primary acoustic signal, (ii) an energy estimate of the primary acoustic signal, and (iii) a level difference based on the primary acoustic signal and a secondary acoustic signal, the primary acoustic signal representing at least one captured sound and the secondary acoustic signal representing at least one other captured sound; and applying the filter estimate to the primary acoustic signal to produce a speech estimate.
 20. The non-transitory computer readable medium of claim 19, wherein the at least one hardware processor comprises an audio processor. 